SlideShare a Scribd company logo
1 of 48
Software Design Introduction to Software Engineering College of Computer Studies De La Salle University - Manila
[object Object],[object Object],[object Object],Software Design
Software Design ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Object-Oriented Software Engineering (www.lloseng.com)
The Process of Design   ,[object Object],[object Object],[object Object],[object Object],[object Object],Object-Oriented Software Engineering (www.lloseng.com)
Why Design? Maintain With design Without design Implement Test Design Implement Test Maintain
Benefits of Design ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Phases in the Design Process Ian Sommerville.  Software Engineering, 6 th  Edition.
Aspects of Design   ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Object-Oriented Software Engineering (www.lloseng.com)
Typical Architectural Components ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Architectural Design Component: Program Organization ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Design Approaches: Top-down Design ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],Design Approaches: Bottom-Up Design Object-Oriented Software Engineering (www.lloseng.com)
Top down vs Bottom up ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Top-down and Bottom-up are  not  competing strategies Back
Architectural Design Component: Error Processing ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Back
Design Principles ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Design Principle 1: Divide and Conquer   ,[object Object],[object Object],[object Object],[object Object],[object Object],Object-Oriented Software Engineering (www.lloseng.com)
Ways of dividing a software system ,[object Object],[object Object],[object Object],[object Object],[object Object],Object-Oriented Software Engineering (www.lloseng.com)
Design Principle 2: Increase Cohesion where possible ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Functional Cohesion  (Strong) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Object-Oriented Software Engineering (www.lloseng.com)
Layer Cohesion ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Object-Oriented Software Engineering (www.lloseng.com)
Example: Layer Cohesion Object-Oriented Software Engineering (www.lloseng.com)
Sequential Cohesion (Medium) ,[object Object],[object Object],[object Object],Object-Oriented Software Engineering (www.lloseng.com)
Communicational Cohesion (Medium) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Object-Oriented Software Engineering (www.lloseng.com)
Procedural Cohesion (Weak) ,[object Object],[object Object],[object Object],[object Object],Object-Oriented Software Engineering (www.lloseng.com)
Temporal Cohesion (Weak) ,[object Object],[object Object],[object Object],[object Object],Object-Oriented Software Engineering (www.lloseng.com)
Utility Cohesion (Weak) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Design Principle 3: Reduce Coupling where possible ,[object Object],[object Object],[object Object],[object Object],[object Object],Object-Oriented Software Engineering (www.lloseng.com)
Content Coupling (Must be avoided) ,[object Object],[object Object],[object Object],[object Object],[object Object],Object-Oriented Software Engineering (www.lloseng.com)
Common Coupling (Must be avoided) ,[object Object],[object Object],[object Object],[object Object],[object Object],Object-Oriented Software Engineering (www.lloseng.com)
Control Coupling (Must be avoided)  ,[object Object],[object Object],[object Object],[object Object],[object Object],Object-Oriented Software Engineering (www.lloseng.com)
Example of Control Coupling public routineX(String command) { if (command.equals("drawCircle") { drawCircle(); } else { drawRectangle(); } }   Object-Oriented Software Engineering (www.lloseng.com)
Stamp Coupling (Tolerable) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Object-Oriented Software Engineering (www.lloseng.com)
Example of Stamp Coupling public class Emailer { public void sendEmail(Employee e, String text) {...} ... } public class Emailer { public void sendEmail(String name, String email, String text)  {...} ... } Using simple data types to avoid it: Object-Oriented Software Engineering (www.lloseng.com)
Example of Stamp Coupling public interface Addressee { public abstract String getName(); public abstract String getEmail(); }   public class Employee implements Addressee {…}   public class Emailer { public void sendEmail(Addressee e, String text) {...} ... } Using an interface to avoid it: Object-Oriented Software Engineering (www.lloseng.com)
Data or Normal Coupling (Preferable) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Object-Oriented Software Engineering (www.lloseng.com)
Routine Call Coupling ,[object Object],[object Object],[object Object],[object Object],[object Object],Object-Oriented Software Engineering (www.lloseng.com)
Type Use Coupling   ,[object Object],[object Object],[object Object],[object Object],Object-Oriented Software Engineering (www.lloseng.com)
Inclusion or Import Coupling  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Object-Oriented Software Engineering (www.lloseng.com)
External Coupling  ,[object Object],[object Object],Object-Oriented Software Engineering (www.lloseng.com)
Design Principle 4: Keep the level of Abstraction as high as possible   ,[object Object],[object Object],[object Object],Object-Oriented Software Engineering (www.lloseng.com)
Abstraction and Classes ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Object-Oriented Software Engineering (www.lloseng.com)
Design Principle 5: Increase Reusability where possible ,[object Object],[object Object],[object Object],[object Object],[object Object],Object-Oriented Software Engineering (www.lloseng.com)
Design Principle 6: Reuse Existing Designs and Code where possible ,[object Object],[object Object],[object Object],Object-Oriented Software Engineering (www.lloseng.com)
Design Principle 7: Design for Flexibility   ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Object-Oriented Software Engineering (www.lloseng.com)
Design Principle 8: Anticipate Obsolescence   ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Object-Oriented Software Engineering (www.lloseng.com)
Design Principle 9: Design for Portability   ,[object Object],[object Object],[object Object],Object-Oriented Software Engineering (www.lloseng.com)
Design Principle 10: Design for Testability   ,[object Object],[object Object],[object Object],[object Object],Object-Oriented Software Engineering (www.lloseng.com)
Design Principle 11: Design Defensively ,[object Object],[object Object],[object Object],[object Object],Object-Oriented Software Engineering (www.lloseng.com)

More Related Content

What's hot

Software Designing - Software Engineering
Software Designing - Software EngineeringSoftware Designing - Software Engineering
Software Designing - Software EngineeringPurvik Rana
 
Design concept -Software Engineering
Design concept -Software EngineeringDesign concept -Software Engineering
Design concept -Software EngineeringVarsha Ajith
 
Architectural Design in Software Engineering SE10
Architectural Design in Software Engineering SE10Architectural Design in Software Engineering SE10
Architectural Design in Software Engineering SE10koolkampus
 
Object oriented software engineering
Object oriented software engineeringObject oriented software engineering
Object oriented software engineeringVarsha Ajith
 
Unit 5- Architectural Design in software engineering
Unit 5- Architectural Design in software engineering Unit 5- Architectural Design in software engineering
Unit 5- Architectural Design in software engineering arvind pandey
 
Software design, software engineering
Software design, software engineeringSoftware design, software engineering
Software design, software engineeringRupesh Vaishnav
 
Chapter 08
Chapter 08Chapter 08
Chapter 08guru3188
 
Top Down and Bottom Up Design Model
Top Down and Bottom Up Design ModelTop Down and Bottom Up Design Model
Top Down and Bottom Up Design ModelAbdul Rahman Sherzad
 
Lecture 19 design concepts
Lecture 19   design conceptsLecture 19   design concepts
Lecture 19 design conceptsIIUI
 
Pressman ch-11-component-level-design
Pressman ch-11-component-level-designPressman ch-11-component-level-design
Pressman ch-11-component-level-designOliver Cheng
 
Architectural Design
Architectural DesignArchitectural Design
Architectural DesignJay Thakkar
 
Design and Implementation in Software Engineering
Design and Implementation in Software EngineeringDesign and Implementation in Software Engineering
Design and Implementation in Software EngineeringKourosh Sajjadi
 
Software Prototyping in Software Engineering SE8
Software Prototyping in Software Engineering SE8Software Prototyping in Software Engineering SE8
Software Prototyping in Software Engineering SE8koolkampus
 
Fundamental design concepts
Fundamental design conceptsFundamental design concepts
Fundamental design conceptssrijavel
 
Software engineering 17 architectural design
Software engineering 17 architectural designSoftware engineering 17 architectural design
Software engineering 17 architectural designVaibhav Khanna
 
Unit iii(part d - component level design)
Unit   iii(part d - component level design)Unit   iii(part d - component level design)
Unit iii(part d - component level design)BALAJI A
 
Design process and concepts
Design process and conceptsDesign process and concepts
Design process and conceptsSlideshare
 

What's hot (20)

Software Designing - Software Engineering
Software Designing - Software EngineeringSoftware Designing - Software Engineering
Software Designing - Software Engineering
 
Design concept -Software Engineering
Design concept -Software EngineeringDesign concept -Software Engineering
Design concept -Software Engineering
 
Architectural Design in Software Engineering SE10
Architectural Design in Software Engineering SE10Architectural Design in Software Engineering SE10
Architectural Design in Software Engineering SE10
 
Object oriented software engineering
Object oriented software engineeringObject oriented software engineering
Object oriented software engineering
 
Unit 5- Architectural Design in software engineering
Unit 5- Architectural Design in software engineering Unit 5- Architectural Design in software engineering
Unit 5- Architectural Design in software engineering
 
Software design, software engineering
Software design, software engineeringSoftware design, software engineering
Software design, software engineering
 
Chapter 08
Chapter 08Chapter 08
Chapter 08
 
Software architecture
Software architectureSoftware architecture
Software architecture
 
Top Down and Bottom Up Design Model
Top Down and Bottom Up Design ModelTop Down and Bottom Up Design Model
Top Down and Bottom Up Design Model
 
Lecture 19 design concepts
Lecture 19   design conceptsLecture 19   design concepts
Lecture 19 design concepts
 
Pressman ch-11-component-level-design
Pressman ch-11-component-level-designPressman ch-11-component-level-design
Pressman ch-11-component-level-design
 
Ch09
Ch09Ch09
Ch09
 
Architectural Design
Architectural DesignArchitectural Design
Architectural Design
 
Design and Implementation in Software Engineering
Design and Implementation in Software EngineeringDesign and Implementation in Software Engineering
Design and Implementation in Software Engineering
 
Software Prototyping in Software Engineering SE8
Software Prototyping in Software Engineering SE8Software Prototyping in Software Engineering SE8
Software Prototyping in Software Engineering SE8
 
Fundamental design concepts
Fundamental design conceptsFundamental design concepts
Fundamental design concepts
 
Software engineering 17 architectural design
Software engineering 17 architectural designSoftware engineering 17 architectural design
Software engineering 17 architectural design
 
Unit iii(part d - component level design)
Unit   iii(part d - component level design)Unit   iii(part d - component level design)
Unit iii(part d - component level design)
 
Design process and concepts
Design process and conceptsDesign process and concepts
Design process and concepts
 
Ch06
Ch06Ch06
Ch06
 

Viewers also liked

An overview about effort value points
An overview about effort value pointsAn overview about effort value points
An overview about effort value pointskebsterz
 
Pokemon an introduction
Pokemon   an introductionPokemon   an introduction
Pokemon an introductionkebsterz
 
Pokémon competitive battling an introduction
Pokémon competitive battling   an introductionPokémon competitive battling   an introduction
Pokémon competitive battling an introductionkebsterz
 
An overview about effort value points
An overview about effort value pointsAn overview about effort value points
An overview about effort value pointskebsterz
 
08 class and sequence diagrams
08   class and sequence diagrams08   class and sequence diagrams
08 class and sequence diagramskebsterz
 

Viewers also liked (6)

An overview about effort value points
An overview about effort value pointsAn overview about effort value points
An overview about effort value points
 
Pokemon an introduction
Pokemon   an introductionPokemon   an introduction
Pokemon an introduction
 
Pokémon competitive battling an introduction
Pokémon competitive battling   an introductionPokémon competitive battling   an introduction
Pokémon competitive battling an introduction
 
An overview about effort value points
An overview about effort value pointsAn overview about effort value points
An overview about effort value points
 
Design UML diagrams
Design UML diagramsDesign UML diagrams
Design UML diagrams
 
08 class and sequence diagrams
08   class and sequence diagrams08   class and sequence diagrams
08 class and sequence diagrams
 

Similar to 07 software design

Function oriented design
Function oriented designFunction oriented design
Function oriented designVidhun T
 
Unit_4_Software_Design.pptx
Unit_4_Software_Design.pptxUnit_4_Software_Design.pptx
Unit_4_Software_Design.pptxtaxegap762
 
Design concepts and principles
Design concepts and principlesDesign concepts and principles
Design concepts and principlessaurabhshertukde
 
CHAPTER FOUR buugii 2023.docx
CHAPTER FOUR buugii 2023.docxCHAPTER FOUR buugii 2023.docx
CHAPTER FOUR buugii 2023.docxRUKIAHASSAN4
 
chapter-6-Software_Engineering_P1_MohamedElhawy_19135002.pptx
chapter-6-Software_Engineering_P1_MohamedElhawy_19135002.pptxchapter-6-Software_Engineering_P1_MohamedElhawy_19135002.pptx
chapter-6-Software_Engineering_P1_MohamedElhawy_19135002.pptxMahmoudZidan53
 
Managing Software as Knowledge (2005)
Managing Software as Knowledge (2005)Managing Software as Knowledge (2005)
Managing Software as Knowledge (2005)Joe Gollner
 
Software_Engineering_Presentation (1).pptx
Software_Engineering_Presentation (1).pptxSoftware_Engineering_Presentation (1).pptx
Software_Engineering_Presentation (1).pptxArifaMehreen1
 
11.3.14&22.1.16
11.3.14&22.1.1611.3.14&22.1.16
11.3.14&22.1.16Rajes Wari
 
Software Design
Software Design Software Design
Software Design Anas Bilal
 
Chapter 7 Design Architecture and Methodology1.docx
Chapter 7 Design Architecture and Methodology1.docxChapter 7 Design Architecture and Methodology1.docx
Chapter 7 Design Architecture and Methodology1.docxmccormicknadine86
 
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvfUNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvfputtipavan23022023
 
Lecture 11
Lecture 11Lecture 11
Lecture 11Rana Ali
 

Similar to 07 software design (20)

Function oriented design
Function oriented designFunction oriented design
Function oriented design
 
6&8-Design.ppt
6&8-Design.ppt6&8-Design.ppt
6&8-Design.ppt
 
Unit_4_Software_Design.pptx
Unit_4_Software_Design.pptxUnit_4_Software_Design.pptx
Unit_4_Software_Design.pptx
 
06 fse design
06 fse design06 fse design
06 fse design
 
Design concepts and principles
Design concepts and principlesDesign concepts and principles
Design concepts and principles
 
CHAPTER FOUR buugii 2023.docx
CHAPTER FOUR buugii 2023.docxCHAPTER FOUR buugii 2023.docx
CHAPTER FOUR buugii 2023.docx
 
chapter-6-Software_Engineering_P1_MohamedElhawy_19135002.pptx
chapter-6-Software_Engineering_P1_MohamedElhawy_19135002.pptxchapter-6-Software_Engineering_P1_MohamedElhawy_19135002.pptx
chapter-6-Software_Engineering_P1_MohamedElhawy_19135002.pptx
 
Managing Software as Knowledge (2005)
Managing Software as Knowledge (2005)Managing Software as Knowledge (2005)
Managing Software as Knowledge (2005)
 
Software_Engineering_Presentation (1).pptx
Software_Engineering_Presentation (1).pptxSoftware_Engineering_Presentation (1).pptx
Software_Engineering_Presentation (1).pptx
 
Software design i (2) (1)
Software design   i (2) (1)Software design   i (2) (1)
Software design i (2) (1)
 
Full Paper
Full PaperFull Paper
Full Paper
 
11.3.14&22.1.16
11.3.14&22.1.1611.3.14&22.1.16
11.3.14&22.1.16
 
Software Design
Software Design Software Design
Software Design
 
Chapter 7 Design Architecture and Methodology1.docx
Chapter 7 Design Architecture and Methodology1.docxChapter 7 Design Architecture and Methodology1.docx
Chapter 7 Design Architecture and Methodology1.docx
 
Unit-3.doc
Unit-3.docUnit-3.doc
Unit-3.doc
 
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvfUNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
 
INTEGRATIVE PROGRAMMING ch1.pptx
INTEGRATIVE PROGRAMMING ch1.pptxINTEGRATIVE PROGRAMMING ch1.pptx
INTEGRATIVE PROGRAMMING ch1.pptx
 
Sda 2
Sda   2Sda   2
Sda 2
 
5. oose design new copy
5. oose design new   copy5. oose design new   copy
5. oose design new copy
 
Lecture 11
Lecture 11Lecture 11
Lecture 11
 

07 software design

  • 1. Software Design Introduction to Software Engineering College of Computer Studies De La Salle University - Manila
  • 2.
  • 3.
  • 4.
  • 5. Why Design? Maintain With design Without design Implement Test Design Implement Test Maintain
  • 6.
  • 7. Phases in the Design Process Ian Sommerville. Software Engineering, 6 th Edition.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21. Example: Layer Cohesion Object-Oriented Software Engineering (www.lloseng.com)
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31. Example of Control Coupling public routineX(String command) { if (command.equals("drawCircle") { drawCircle(); } else { drawRectangle(); } } Object-Oriented Software Engineering (www.lloseng.com)
  • 32.
  • 33. Example of Stamp Coupling public class Emailer { public void sendEmail(Employee e, String text) {...} ... } public class Emailer { public void sendEmail(String name, String email, String text) {...} ... } Using simple data types to avoid it: Object-Oriented Software Engineering (www.lloseng.com)
  • 34. Example of Stamp Coupling public interface Addressee { public abstract String getName(); public abstract String getEmail(); }   public class Employee implements Addressee {…}   public class Emailer { public void sendEmail(Addressee e, String text) {...} ... } Using an interface to avoid it: Object-Oriented Software Engineering (www.lloseng.com)
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.

Editor's Notes

  1. Pfleeger, 2nd Ed p 159 -161
  2. Good & Bad (Sommervile, 5th Ed p 226 Rapid Development, p 143 Code Complete, p 35 )